using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PengZhuangMethod : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    // 碰撞触发接触时会自动执行这个函数
    // collision就是碰到当前对象的对象
    // collision的关键对象: 
    private void OnCollisionEnter(Collision collision)
    {
        // 获取碰撞对象的碰撞器信息
        // var a = collision.collider;

        // 获取碰撞对象的GameObject
        // var b = collision.gameObject;

        // 获取碰撞对象的位置信息
        // var c = collision.transform;

        // 获取触碰点数相关: 就是两个物体接触的点
        // var d = collision.contactCount;

        // 获取接触点的详细信息
        // ContactPoint[] e = collision.contacts;

        // 制药得到了碰撞对象的任意一个信息, 就可以得到它的所有信息
        // collision.transform.GetComponent<>();

        print(this.name + "被" + collision.gameObject.name + "撞到了");
    }

    // 碰撞结束分离时会自动执行这个函数
    private void OnCollisionExit(Collision collision)
    {
        print(this.name + "和" + collision.gameObject.name + "撞到结束了");
    }

    // 两个物体相互接触摩擦时会不停地调用该函数; 两者接触后静止不动则不触发这个方法
    private void OnCollisionStay(Collision collision)
    {
        print(this.name + "和" + collision.gameObject.name + "碰撞中");
    }

    // 触发开始函数: 当第一次接触时会进行触发
    // Trigger没有物理碰撞效果
    protected virtual void OnTriggerEnter(Collider other)
    {
        print(this.name + "被" + other.gameObject.name + "触发了");
    }

    // 触发结束函数: 当接触结束时会进行触发
    private void OnTriggerExit(Collider other)
    {
        print(this.name + "和" + other.gameObject.name + "触发结束了");
    }

    // 当两个对象交汇在一起时进行触发
    private void OnTriggerStay(Collider other)
    {
        print(this.name + "和" + other.gameObject.name + "触发中");
    }

}
